home *** CD-ROM | disk | FTP | other *** search
/ PC Media 23 / PC MEDIA CD23.iso / share / prog / anubis / textmode.txt < prev    next >
Encoding:
Text File  |  1996-06-15  |  10.2 KB  |  193 lines

  1.                         ╔═══════════════════════════════════════════════════╗
  2.  
  3.                         ║         Especificaciones para TEXTMODE.H          ║
  4.  
  5.                         ╚══════════════╦═════════════════════╦══════════════╝
  6.  
  7.                                        ║ (C) Anubis Software ║
  8.  
  9.                                        ╚═════════════════════╝
  10.  
  11.  
  12.  
  13.    Esta librería pretende facilitar el manejo de la pantalla en el modo de texto de 80x25.
  14.  
  15.  
  16.  
  17.                   ╔═════════════════════════════════════════════════════════════╗
  18.  
  19.                   ║ Definición de constantes de la librería                     ║
  20.  
  21.                   ╚═════════════════════════════════════════════════════════════╝
  22.  
  23.                   
  24.  
  25.    Las siguientes declaraciones establecen la memoria de video y la longitud de una página de video.
  26.  
  27. #define PANTALLA     0xB800
  28.  
  29. #define LONG_PAGINA  0x1000
  30.  
  31.  
  32.  
  33. // Definición de tipos del cursor para la funcion tipo_cursor.
  34.  
  35. #define CURSOR_INVISIBLE   0
  36.  
  37. #define CURSOR_NORMAL      1
  38.  
  39. #define CURSOR_BLOQUE      2
  40.  
  41. #define OLD_CURSOR         3
  42.  
  43.  
  44.  
  45.                   ╔═════════════════════════════════════════════════════════════╗
  46.  
  47.                   ║ Definición de macros de la librería                         ║
  48.  
  49.                   ╚═════════════════════════════════════════════════════════════╝
  50.  
  51.  
  52.  
  53.    Las siguientes declaraciones sirven para acceder más facilmente a la memoria de video.
  54.  
  55.    La macro CARACTER(x,y) es una optimización de (y*160+x*2)
  56.  
  57.  
  58.  
  59. #define CARACTER(x,y)    (WORD)(((y)<<7)+((y)<<5)+((x)<<1))
  60.  
  61. #define ATRIBUTO(x,y)    (WORD)(CARACTER(x,y)+1)
  62.  
  63. #define CARACTERP(n,x,y) (WORD)((n)*LONG_PAGINA+CARACTER(x,y))
  64.  
  65. #define ATRIBUTOP(n,x,y) (WORD)((n)*LONG_PAGINA+ATRIBUTO(x,y))
  66.  
  67. #define COLOR(x,y)       (BYTE)(x+(y<<4))
  68.  
  69.  
  70.  
  71.                   ╔═════════════════════════════════════════════════════════════╗
  72.  
  73.                   ║   La librería tiene ciertas variables globales:             ║
  74.  
  75.                   ╚═════════════════════════════════════════════════════════════╝
  76.  
  77.                   
  78.  
  79. extern BYTE CTexto,CFondo;
  80.  
  81. extern BYTE CCursorx,CCursory;
  82.  
  83.  
  84.  
  85.    Estas variables sirven para enjuiciar los colores de texto y de fondo de la pantalla, asi como 
  86.  
  87. la posición de un cursor virtual.
  88.  
  89.  
  90.  
  91.                   ╔═════════════════════════════════════════════════════════════╗
  92.  
  93.                   ║     Declaración de las funciones de la librería             ║
  94.  
  95.                   ╚═════════════════════════════════════════════════════════════╝
  96.  
  97.  
  98.  
  99. void tipo_cursor (unsigned char tipo);
  100.  
  101. ─────────────────────────────────-----
  102.  
  103.    Esta función establece el tipo del cursor a uno de los que se mencionan en las constantes.
  104.  
  105.  
  106.  
  107.    CURSOR_INVISIBLE  -> Hace desaparecer el cursor.
  108.  
  109.    CURSOR_NORMAL     -> Caracter de subrayado.
  110.  
  111.    CURSOR_BLOQUE     -> Bloque sólido.
  112.  
  113.    OLD_CURSOR        -> El anterior al actual.
  114.  
  115.  
  116.  
  117.    Esta función sólo modifica el tipo de cursor, pero bajo ningún 
  118.  
  119. concepto modifica la posición del mismo.
  120.  
  121.    
  122.  
  123.  
  124.  
  125. void Save_Screen (unsigned short );
  126.  
  127. ───────────────────────────────────
  128.  
  129.    Esta función guarda la pantalla en una de las zonas de video que pueden hacer a las veces de 
  130.  
  131. pantallas de video.
  132.  
  133.    Esto es útil para hacer presentaciones, se pueden guardar hasta siete (0...6) pantallas, la 
  134.  
  135. número 0 es la pantalla que normalmente está en visualización.
  136.  
  137.  
  138.  
  139.  
  140.  
  141. void Restore_Screen (unsigned short );
  142.  
  143. ──────────────────────────────────────
  144.  
  145.    Esta función, es la reciproca de la funcion Save_Screen. Lo que hace es restaurar el contenido 
  146.  
  147. de una de las siete pantallas auxiliares a la pantalla que se esta visualizando. Que es siempre la 0.
  148.  
  149.    En realidad copia el contenido de la página especificada a la página 0.
  150.  
  151.  
  152.  
  153.  
  154.  
  155. void escribecppa(char car, WORD pos, BYTE color);
  156.  
  157. ─────────────────────────────────────────────────
  158.  
  159.    Esta funcione escribe el caracter car en la posición de video pos,
  160.  
  161. (Incluyendose todas las páginas de video) pos es un desplazamiento sobre el principio de
  162.  
  163. la memoria de video y se puede controlar mejor con las macros de  esta  librería. Y  con
  164.  
  165. los atributos de color especificados en la variable color.
  166.  
  167.    La representación de la pantalla es la siguiente.
  168.  
  169.    
  170.  
  171.                             11111111112                     77
  172.  
  173.                   012345678901234567890                 ... 89
  174.  
  175.                  ╔════════════════════════════════════════════╗
  176.  
  177.                 0║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  178.  
  179.                 1║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  180.  
  181.                 2║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  182.  
  183.                 3║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  184.  
  185.                 4║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  186.  
  187.                 5║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║ 
  188.  
  189.                 .║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  190.  
  191.                 .║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  192.  
  193.                 .║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  194.  
  195.                  ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  196.  
  197.                23║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║    
  198.  
  199.                24║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║
  200.  
  201.                  ╚════════════════════════════════════════════╝
  202.  
  203.  
  204.  
  205. Existen muchas variantes de esta funcion:
  206.  
  207.  
  208.  
  209. // Definición de las macros para escribir un caracter.
  210.  
  211. #define escribec(car,posx,posy,ctexto,cfondo)        escribecppa(car,CARACTER(posx,posy),COLOR(ctexto,cfondo))
  212.  
  213. --------------------------------------------------------------------------------------------------------------
  214.  
  215.    Esta función escribe el caracter car en la posición (posx,posy) y con los colores de texto ctexto y de fondo
  216.  
  217. cfondo.
  218.  
  219.  
  220.  
  221. #define escribecp(pag,car,posx,posy,ctexto,cfondo)   escribecppa(car,CARACTERP(posx,posy),COLOR(ctexto,cfondo))
  222.  
  223. ---------------------------------------------------------------------------------------------------------------
  224.  
  225.    Es analoga a la anterior salvo en que también se referencia la página en la que se desea escribir.
  226.  
  227.    
  228.  
  229. #define escribeca(car,posx,posy,atrib)               escribecppa(car,CARACTER(posx,posy),atrib)
  230.  
  231. -----------------------------------------------------------------------------------------------
  232.  
  233.    Aquí se pasa el color en un solo BYTE.
  234.  
  235.  
  236.  
  237. #define escribecpa(pag,car,posx,posy,atrib)          escribecppa(car,CARACTERP(pag,posx,posy),atrib)
  238.  
  239. ----------------------------------------------------------------------------------------------------
  240.  
  241.    Igual que el anterior, pero con esta función se puede seleccionar la página.
  242.  
  243.  
  244.  
  245. #define escribecs(car)                               escribecppa(car,CARACTER(CCursorx,CCursory),COLOR(CTexto,CFondo))
  246.  
  247. ----------------------------------------------------------------------------------------------------------------------
  248.  
  249.    Esta función utiliza las coordenadas propias de la librería CTexto,CFondo,CCursorx,CCursory
  250.  
  251.  
  252.  
  253. #define escribecsp(pag,car)                          escribecppa(car,CARACTERP(pag,CCursorx,CCursory),COLOR(CTexto,CFondo))
  254.  
  255. ---------------------------------------------------------------------------------------------------------------------------
  256.  
  257.    Analoga a la anterior y además se puede seleccionar la página de video en la cual escribir.
  258.  
  259.  
  260.  
  261.  
  262.  
  263. NOTAS:
  264.  
  265. ══════
  266.  
  267.    Los rangos para car son los 256 caracteres a escribir.
  268.  
  269.    pag será un valor entre 0 y 6 que determina la página de video en la que se escribe el caracter.
  270.  
  271.    posx, posy son las coordenadas de pantalla. posx entre 0 y 79 y posy entre 0 y 24.
  272.  
  273.    Para los ctexto y cfondo consultar la libreria colores.h
  274.  
  275.    atrib no es otra cosa que la combinación de los colores mediante la macro COLOR de esta misma librería.
  276.  
  277.    
  278.  
  279.    
  280.  
  281. void escribeppa(char *,WORD ,BYTE );
  282.  
  283. ────────────────────────────────────
  284.  
  285.    Esta funcion es analoga a la escribecppa, salvo en que escribe toda
  286.  
  287. una cadena de caracteres en lugar de un sólo caracter.
  288.  
  289.  
  290.  
  291.    Existen muchas variantes de esta funcion:
  292.  
  293.  
  294.  
  295. // Definición de las macros para escribir una cadena de carácteres
  296.  
  297. #define escribe(cadena,posx,posy,ctexto,cfondo)      escribeppa(cadena,CARACTER(posx,posy),COLOR(ctexto,cfondo))
  298.  
  299. #define escribep(pag,cadena,posx,posy,ctexto,cfondo) escribeppa(cadena,CARACTERP(pag,posx,posy),COLOR(ctexto,cfondo))
  300.  
  301. #define escribea(cadena,posx,posy,atrib)             escribeppa(cadena,CARACTER(posx,posy),atrib)
  302.  
  303. #define escribepa(pag,cadena,posx,posy,atrib)        escribeppa(cadena,CARACTERP(pag,posx,posy),atrib)
  304.  
  305. #define escribes(cadena)                             escribeppa(cadena,CARACTER(CCursorx,CCursory),COLOR(CTexto,CFondo))
  306.  
  307. #define escribesp(pag,cadena)                        escribeppa(cadena,CARACTERP(pag,CCursorx,CCursory),COLOR(CTexto,CFondo))
  308.  
  309.  
  310.  
  311.  
  312.  
  313. NOTAS:
  314.  
  315. ══════
  316.  
  317.    Las caracteristicas de las variables son análogas a las caracteristicas de la función
  318.  
  319.    escribecppa;
  320.  
  321.    Excepto en el parametro cadena que es una cadena de caracteres.
  322.  
  323.    
  324.  
  325.    
  326.  
  327. void Borrar_Pantallapca(BYTE pag,char car, BYTE color);
  328.  
  329. ───────────────────────────────────────────────────────
  330.  
  331.    Esta funcion borra la página de video seleccionada (0...6) con el caracter
  332.  
  333. car y con los atributos de color especificados.
  334.  
  335.  
  336.  
  337.    Existen algunas variantes de esta funcion:
  338.  
  339.  
  340.  
  341. //Definicion de las macros para Borrar_Pantalla
  342.  
  343. #define Borrar_Pantalla()                            Borrar_Pantallapca(0,' ',COLOR(TBLANCO,FNEGRO))
  344.  
  345. #define Borrar_Pantallap(pag)                        Borrar_Pantallapca(pag,' ',COLOR(TBLANCO,FNEGRO))
  346.  
  347. #define Borrar_Pantallac(car,ctexto,cfondo)          Borrar_Pantallapca(0,car,COLOR(ctexto,cfondo))
  348.  
  349. #define Borrar_Pantallapc(pag,car,ctexto,cfondo)     Borrar_Pantallapca(pag,car,COLOR(ctexto,cfondo))
  350.  
  351.  
  352.  
  353.  
  354.  
  355. void Grabar_Pagina(BYTE pag, char *fichero);
  356.  
  357. ────────────────────────────────────────────
  358.  
  359.    Esta funcion guarda la página de video especificada en un fichero.
  360.  
  361.  
  362.  
  363.  
  364.  
  365. void Cargar_Pagina(BYTE pag, char *fichero);
  366.  
  367. ────────────────────────────────────────────
  368.  
  369.    Esta funcion carga en la página especificada el fichero de pantalla.
  370.  
  371.    El fichero debería ser previamente guardado con la función 
  372.  
  373. Grabar_Pagina.
  374.  
  375.  
  376.  
  377.  
  378.  
  379. void Muestra_Pagina(unsigned short pag);
  380.  
  381. ────────────────────────────────────────
  382.  
  383.    Esta funcion hace que la pantalla que se va a visualizar no sea la
  384.  
  385. cero, sino la del número que se especifica (0...6).